'''
生成器   本质是迭代器，只能向下执行

节省内存
买10000个独眼小宝
'''


# def order():
#     lst = []
#     for i  in range(10000):
#         lst.append(f"独眼小宝{i}号")
#     return lst  # 列表占内存
#
# lst = order()
# print(lst)

def order():
    for i in range(10000):
        yield f"独眼小宝{i}号"  # yield相当于 return  执行一次循环就退出


g = order()
print(g.__next__())
print(g.__next__())
print(g.__next__())

# 这是需要了调用一次  然后循环一次  我什么时候要就什么时候生成，不要考虑直接生产出10000还用列表保存
# 这可能 是  现在电商  不会购买10000件衣服来卖，他是有订单了直接通知厂家发货
'''
第一次执行输出  
    独眼小宝0号
    
第二次执行输出
    独眼小宝1号

第三次执行输出
    独眼小宝2号
'''


##  一次生成50个独眼小宝的生成器
def order2():
    lst = []
    for i in range(10000):
        lst.append(f"独眼小宝{i}号")
        if len(lst) == 50:
            yield lst
            lst = []


g = order2()
print(g.__next__())